import Vue from 'vue'
import moment from 'moment'

var NONE = '-'

// Vue.filter('itPercent', function(value, multiply, withSign, digits, defaultValue) {
//   // For percent, multiply it with 100.
//   multiply = it.nil(multiply) ? 1 : 100;
//   // For percent, it has a sign prefix by default.
//   withSign = it.nil(withSign) ? true : withSign;
//   if (it.nil(digits)) {
//     digits = 2;
//   }
//   value = formatNumber(value, multiply, withSign, digits);
//   value = it.exist(value) ? value : defaultValue;
//   return it.exist(value) ? (value + '%') : NONE;
// });

// Vue.filter('itCurrency', function(value, withSign, noSymbol, digits, type, defaultValue) {
//   // 盘面的资金表示的格式，如果0表示是美元，1表示是人民币
//   var rmb = it.constant.CURRENCY_RMB,
//     dollar = it.constant.CURRENCY_DOLLAR,
//     defaultDigits, symbol;

//   if (it.nil(type)) {
//     // 后端会返回该类型
//     type = it.getIntegerSystemConfigByName('currency');
//   }
//   // Currently, we only support RMB and Dollar
//   switch (type) {
//     case dollar:
//       defaultDigits = 2;
//       symbol = '$';
//       break;
//     default:
//       type = rmb;
//       defaultDigits = 2;
//       symbol = '¥';
//       break;
//   }

//   if (it.nil(digits)) {
//     digits = defaultDigits;
//   }
//   value = formatNumber(value, undefined, withSign, digits);
//   value = it.exist(value) ? value : defaultValue;
//   if (it.exist(value) && !noSymbol) {
//     value = symbol + value;
//   }
//   return value || NONE;
// });

// Vue.filter('itCurrencyRmb', function(value, withSign, noSymbol, digits, defaultValue) {
//   return Vue.filter('itCurrency')(value, withSign, noSymbol, digits, it.constant.CURRENCY_RMB, defaultValue);
// });

Vue.filter('itDate', function(value, format, defaultValue) {
  return formatDate(value, format || 'MM-DD', defaultValue)
})

Vue.filter('itDatetime', function(value, format, defaultValue) {
  return formatDate(value, format || 'YYYY-MM-DD HH:mm:ss', defaultValue)
})

Vue.filter('itTime', function(value, format, defaultValue) {
  return formatDate(value, format || 'HH:mm', defaultValue)
})
Vue.filter('itTimeHms', function(value, format, defaultValue) {
  return formatDate(value, format || 'HH:mm:ss', defaultValue)
})

Vue.filter('itDatetimeYMD', function(value, format, defaultValue) {
  return formatDate(value, format || 'YYYY-MM-DD', defaultValue)
})
Vue.filter('itDatetimeYMD-ZH', function(value, format, defaultValue) {
  moment().locale('zh-cn')
  return formatDate(value, format || 'LL', defaultValue)
})
Vue.filter('itDatetimeYear', function(value, format, defaultValue) {
  return formatDate(value, format || 'YYYY', defaultValue)
})
// Vue.filter('itLowercase', function(value) {
//   return value && value.toLowerCase();
// });

/* function formatNumber(value, multiply, withSign, digits) {
  var val = _.toNumber(value);
  if (it.nil(val) || isNaN(val)) {
    return undefined;
  }

  if (multiply) {
    val = val * multiply;
  }

  var sign = '';
  if (withSign) {
    sign = (val >= 0 ? '+' : '-');
    val = Math.abs(val);
  }

  var result = it.formatPoint(val, digits);
  if (it.nil(result)) {
    return undefined;
  }
  return sign + result;
}
*/
function formatDate(value, format, defaultValue) {
  if (exist(value)) {
    value = moment(value).format(format)
  }

  return value || defaultValue || NONE
}

function exist(value) {
  return value !== null && value !== undefined
}

function nil(value) {
  return !exist(value)
}
